#ifndef SCENE_H_
#define SCENE_H_


#include <memory>
#include "arithmetic.h"
#include "render_system/gl_render_system_define.h"

class GL_RENDER_SYSTEM_API Scene
{
public:
    virtual void init() {}

    virtual void onRender();

    virtual void onSizeChanged(int iwidth, int iHeight);

    virtual void onKeyboard(unsigned char key, int x, int y) {}

    virtual void onSpecialKeyPressed(int key, int x, int y) {}

    virtual void onMouseButtonEvent(int button, int state, int x, int y) {}

    virtual void onMouseMove(int x, int y) {}

protected:
    glm::mat4 _modelViewMatrix;
    glm::mat4 _projectionMatrix;
    struct  
    {
        glm::float_t width;
        glm::float_t height;
    } _viewSize;
};

typedef std::shared_ptr<Scene> ScenePtr;

#endif